/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package biermanager.nucleo;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
import javax.swing.JOptionPane;

/**
 *
 * @author Tiago Silva Loureiro
 */
public class Registro {
    private Scanner s;
    private File f;
    FileWriter fw;
    BufferedWriter bw;
   // Criptografia cripto = new Criptografia();
        
    private void AbreArquivoParaLeitura(){
        f = new File("dados/lgn.dtf");
        if ( f.canRead() )
            try {
            s = new Scanner(f);
            }
            catch(FileNotFoundException ex) {JOptionPane.showMessageDialog(null, " Arquivo de login não encontrado! ");}
    }
    
    private void AbreArquivoParaEscrita(){
        f = new File("dados/lgn.dtf");
        if ( f.canWrite() )
        {
            try {
                fw = new FileWriter(f, true);
            } catch (IOException ex) {JOptionPane.showMessageDialog(null, " Erro na escrita do arquivo de login ");}
            bw = new BufferedWriter(fw);
        }
    }
}
/*    public void criaUsuario( Usuario usuario ){
        AbreArquivoParaEscrita();
        try {
            try {
        bw.append(Criptografia.encrypt(usuario.getNome()));
            } catch (BadPaddingException ex){}catch(NoSuchPaddingException ex){Logger.getLogger(Registro.class.getName()).log(Level.SEVERE, null, ex);}catch (IllegalBlockSizeException ex){Logger.getLogger(Registro.class.getName()).log(Level.SEVERE, null, ex);}catch(InvalidKeyException ex){Logger.getLogger(Registro.class.getName()).log(Level.SEVERE, null, ex);} catch (NoSuchAlgorithmException ex) {Logger.getLogger(Registro.class.getName()).log(Level.SEVERE, null, ex);} catch (InvalidAlgorithmParameterException ex) {Logger.getLogger(Registro.class.getName()).log(Level.SEVERE, null, ex);}} catch (IOException ex) { JOptionPane.showMessageDialog(null, "Erro na criação de usuário!"); }
        try {
            bw.append(" ");
         } catch (IOException ex) {JOptionPane.showMessageDialog(null, "Erro na criação de usuário!");  }
        try {
            try {
                bw.append(Criptografia.encrypt(usuario.getSenha()));
                } catch (BadPaddingException ex){}catch(NoSuchPaddingException ex){Logger.getLogger(Registro.class.getName()).log(Level.SEVERE, null, ex);}catch (IllegalBlockSizeException ex){Logger.getLogger(Registro.class.getName()).log(Level.SEVERE, null, ex);}catch(InvalidKeyException ex){Logger.getLogger(Registro.class.getName()).log(Level.SEVERE, null, ex);} catch (NoSuchAlgorithmException ex) {Logger.getLogger(Registro.class.getName()).log(Level.SEVERE, null, ex);} catch (InvalidAlgorithmParameterException ex) {Logger.getLogger(Registro.class.getName()).log(Level.SEVERE, null, ex);}} catch (IOException ex) { JOptionPane.showMessageDialog(null, "Erro na criação de usuário!"); }
        try {
            bw.newLine();
        } catch (IOException ex) {JOptionPane.showMessageDialog(null, "Erro na criação de usuário!");  }
        try {
            bw.flush();
        } catch (IOException ex) {JOptionPane.showMessageDialog(null, "Erro na criação de usuário!");  }
        try {
            bw.close();
        } catch (IOException ex) {JOptionPane.showMessageDialog(null, "Erro na criação de usuário!");  }
        
        emissorDeSons.play("G5");
        JOptionPane.showMessageDialog(null, "Usuario criado!");
    }
    public boolean existeUsuario ( Usuario usuario ) {
        try{
            AbreArquivoParaLeitura();
        }
        catch (NullPointerException ex) {
                Logger.getLogger(Registro.class.getName()).log(Level.SEVERE, null, ex);
                JOptionPane.showMessageDialog(null, "Erro na criação de usuário!");
            }
            boolean statusDaExistencia = false;
            try {
            while ( s.hasNext()) {
                    String[] token = s.nextLine().split("\\s");
                String nomeDeUsuario = Criptografia.encrypt(usuario.getNome());
                if (token[0].compareTo( nomeDeUsuario ) == 0) {
                    statusDaExistencia = true;
                 s.close();
                        }
             }
            } catch (BadPaddingException ex) {
                Logger.getLogger(Registro.class.getName()).log(Level.SEVERE, null, ex);
            } catch (NoSuchPaddingException ex) {
                Logger.getLogger(Registro.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalBlockSizeException ex) {
                Logger.getLogger(Registro.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InvalidKeyException ex) {
                Logger.getLogger(Registro.class.getName()).log(Level.SEVERE, null, ex);
            } catch (NoSuchAlgorithmException ex) {
                Logger.getLogger(Registro.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InvalidAlgorithmParameterException ex) {
                Logger.getLogger(Registro.class.getName()).log(Level.SEVERE, null, ex);
            }
            catch (NullPointerException ex) {
                Logger.getLogger(Registro.class.getName()).log(Level.SEVERE, null, ex);
                JOptionPane.showMessageDialog(null, "Erro na criação de usuário!");
            }
        return statusDaExistencia;
    }
    
    public boolean validaUsuario( Usuario usuario ) throws BadPaddingException, IllegalBlockSizeException, InvalidKeyException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, NoSuchPaddingException{
        boolean statusDaValidacao = false;
        AbreArquivoParaLeitura();
        String nomeCriptografado = Criptografia.encrypt( usuario.getNome() );
        String senhaCriptografado = Criptografia.encrypt( usuario.getSenha() );
        try{
        while( s.hasNext() ){
                String[] token = s.nextLine().split("\\s");
                if( token[ 0 ].compareTo( nomeCriptografado ) == 0 && token[1].compareTo( senhaCriptografado ) == 0  )
                     statusDaValidacao = true;
                else
                    statusDaValidacao = false;
        }
            s.close();
        }
        catch(NullPointerException e){ JOptionPane.showMessageDialog(null, " Erro no arquivo de login!!!"); }
        
        return( statusDaValidacao );
    }
    
}*/
